package xcity

import (
	"fmt"

	"gitee.com/xiaoyutab/xgotool/xerror"
)

// 省市区详情结构
type CityTree struct {
	Province *City `json:"province"` // 省
	Area     *City `json:"area"`     // 市
	Town     *City `json:"town"`     // 区
}

// 获取省市区详情信息
//
//	code	高德省市区代码
func Ad2tree(code uint) (*CityTree, error) {
	if code == 0 {
		return nil, xerror.New("省市区code为空")
	}
	ret := CityTree{}
	// 设置城市名字信息
	cs := fmt.Sprintf("%d", code)
	if len(cs) != 6 {
		return nil, xerror.New("省市区code传输错误")
	}
	// 省份
	if cs[0:2] != "00" {
		codes, err := Ad2info(code / 10000 * 10000)
		if err != nil {
			return nil, err
		}
		ret.Province = codes
	}
	// 市
	if cs[2:4] != "00" {
		codes, err := Ad2info(code / 100 * 100)
		if err != nil {
			return nil, err
		}
		ret.Area = codes
	}
	// 区
	if cs[4:6] != "00" {
		codes, err := Ad2info(code)
		if err != nil {
			return nil, err
		}
		ret.Town = codes
	}
	return &ret, nil
}
